package org.reliablesource.prism.core;

import java.awt.Point;
import java.util.List;

/**
 * 
 * Copyright (c) 2006, Reliable Source, Inc. All Rights Reserved
 * 
 * Created on: Mar 11, 2006
 * 
 * @author Dennis Park <a
 *         href="mailto:dennis.park@gmail.com">dennis.park@gmail.com</a>
 * @model
 * 
 */

public interface IPrismScreen extends IPrismUnit {

	public static final String IMAGE_PATH = "PrismScreen.ImagePath";
	public static final String CURSOR_PTS = "PrismScreen.CursorPoints";
	public static final String CURSOR_START_PT = "PrismScreen.CursorStart";
	public static final String ANNOTATIONS = "PrismScreen.Annotations";
	public static final String EVENT_TYPE = "PrismScreen.EventType";
	public static final String EVENT_WIDGET = "PrismScreen.EventWidget";
	public static final String EVENT_TIMESTAMP = "PrismScreen.EventTimeStamp";
	public static final String WIDGET_ID = "PrismScene.EventWidget.Id";

	public void setImageFileType(String type);

	public void setImageFilePath(String path);

	/**
	 * 
	 * @return
	 * @model
	 */
	public String getImageFileType();

	/**
	 * @return
	 * @model
	 */
	public String getImageFilePath();

	/**
	 * 
	 * @param i
	 * @return
	 */
	public IPrismAnnotation getAnnotation(int i);

	public boolean addAnnotation(IPrismAnnotation a);

	public boolean removeAnnotation(IPrismAnnotation a);

	public IPrismAnnotation[] getAnnotations();

	public boolean addPathLocation(int idx, Point p);

	public Point getPathLocation(int i);

	public boolean removePathLocation(int idx, Point p);

	public Point getPointerStart();

	/**
	 * 
	 * @return The start location of the next Screen in this Tutorial's children
	 *         list. If this is the last screen in sequence, then the return
	 *         value will equal the value returned by getPointerStart().
	 */
	public Point getPointerEnd();

	public void setPointerStart(Point p);

	public List<IPrismAnnotation> getAnnotationsList();

	public List<Point> getPathLocationsList();

	public int getEventType();

	public void setEventType(int _eventType);

	public String getEventWidget();

	public void setEventWidget(String _widget);

	public long getEventDate();

	public void setEventDate(long _date);

	public void setWidgetId(int _id);

	public int getWidgetId();
	
	/*
	 * (non-Javadoc)
	 * 
	 * @see org.reliablesource.prism.core.IPrismScreen#setWidgetId(int)
	 */
	public void setWidget(Object _widget);

	public Object getWidget();
}
